package org.scub.foundation.fournisseur.egicom.core.service.implementations;

import java.util.ArrayList;
import java.util.List;

import org.scub.foundation.fournisseur.egicom.core.dao.interfaces.CategorieDao;
import org.scub.foundation.fournisseur.egicom.core.dto.CategorieDto;
import org.scub.foundation.fournisseur.egicom.core.model.Categorie;
import org.scub.foundation.fournisseur.egicom.core.service.interfaces.CategorieService;
import org.scub.foundation.framework.base.mapping.util.MapperDozerBean;

/**
 * Implémentation des services pour manipuler les catégories.
 * @author E-GICOM
 */
public class CategorieServiceImpl implements CategorieService {

    private CategorieDao categorieDao;

    private MapperDozerBean mapperDozerBean;


    /**
     * {@inheritDoc}
     */
    @Override
    public CategorieDto ajouterOuModifierCategorie(CategorieDto categorie) {

        return null;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void deleteCategorie(Integer idCategorie) {


    }

    /**
     * {@inheritDoc}
     */
    @Override
    public CategorieDto getCategorieById(Integer id) {

        return null;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public List<CategorieDto> getAllCategories() {
        return mapCategorieList(categorieDao.getAllCategories());
    }

    /**
     * Map une catégorie en catégorie DTO.
     * @param categorie la catégorie a mapper
     * @return le CategorieDto correspondant au catégorie
     */
    private CategorieDto mapCategorie(Categorie categorie) {
        final CategorieDto contactDto = mapperDozerBean.map(categorie, CategorieDto.class);
        return contactDto;
    }

    /**
     * Map une liste de catégorie en catégorie DTO.
     * @param catégories les catégories a mapper
     * @return les categoriesDto correspondant aux catégories
     */
    private List<CategorieDto> mapCategorieList(List<Categorie> categories) {
        final List<CategorieDto> categoriesDto = new ArrayList<CategorieDto>();
        for (Categorie categorie : categories) {
            categoriesDto.add(mapCategorie(categorie));
        }
        return categoriesDto;
    }

    public void setCategorieDao(CategorieDao categorieDao) {
        this.categorieDao = categorieDao;
    }

    public void setMapperDozerBean(MapperDozerBean mapperDozerBean) {
        this.mapperDozerBean = mapperDozerBean;
    }

    @Override
    public String sayhello() {
        // TODO Auto-generated method stub
        return "hello";
    }

    
}
